rev 13/10/2023
Test Eeprom I2C 24C32 (32ko adressage 16 bits) & 18F27K42
HARDWARE :
Pour ce test , j'utilise ma Base 18F27K42
Alimentation : bloc secteur 9V + alim DC/DC 5V
Terminal YAT PC 115200 bds ...sur UART1 RC6 TX et RC7 RX , ...via
un cordon prolific TTL/USB
Pickit4 MPLAB pour le chargement du programme
MPLAB IDE et XC8
Liaison I2C1 (hardware) : sur RC3 SCL et RC4 SDA
Module RTC DS231
LCD 4x20 chars en liaison I2C via un pigback PCF8574 (interface 8
sorties en I2C)
Analyser logique 4 voies 50Mhz , IKALOGIC SQA 50
Particularité : I2C du 18F27K42 TRES Specifique .
Mes premiers essais ont été laborieux, car effet de bord avec
traitement du LCD ..
car j'utilisais une portion de table en RAM commune entre LCD et
EEPROM ..
Table tmp[ ] déclarée comme globale , en RAM .
Probleme difficile à cerner SANS analyser logique ...montrant
une valeur intruse dans la sequence I2C d'ecriture en Eeeprom..
et ce, malgré l'init prealable et complete de la table utilisée
tmp[0]='1';
// si LCD utilisé
tmp[1]='2'; // ecriture de 34567 avec 1 et 2 remplacés par
intrus 0x29 et 0x00
tmp[2]='3'; // si LCD utilisé
tmp[3]='4';
tmp[4]='5';
tmp[5]='6';
tmp[6]='7';
tmp[7]=0;
tmp[8]=0;
tmp[9]=0;
p1=&tmp[0];
CPrint(" Ecriture dans Eeprom 24C32 à l'adresse 320 de :\r\n");
Print(p1);CRLF1();
__delay_xSec(2);
// ====== probleme dans cette zone because tmp
etait commune avec eeprom =========
Addr=LCD_ADDR;
LCD_Cmd(LCD_CLEAR);
LCD_Write_CText_At(1,1,"Ecriture Eeprom24C32");
__delay_xSec(2);
//=============================================/
Addr=EEPROM_24C32_ADDR_7b;
SQA=1;
I2cWrite_16(Addr,320,tmp,8);
SQA=0;
__delay_xSec(4);
Problem au niveau ecriture :
L'analyser montre le probleme
modif de la fonction primaire d'ecriture dans le PCF8574 ( LCD)
void I2C_PCF8574_Write(unsigned
char Adrp,unsigned char value)
{
char tmpx[3];
............................... table tmpx[]
locale au lieu de tmp[ ] globale
tmpx[0]=value;
tmpx[1]=0;
I2C1_WriteNBytes(Adrp, tmpx, 1);
__delay_us(30);
}
Test lecture Eeprom (apres écriture)
OK
sortie sur Terminal YAT
Version 2023-1012
Programme de Test sur Eeeprom 24C32 du module RTC DS3231
( et avec LCD I2C PCF8574)
Init_I2C() à 100Khz;
Test presence devices sur Bus I2C1
@ decimal # 78 soit @Device 7bits = 0X27 PCF8754 for LCD 2x16cars
@ decimal # 174 soit @Device 7bits = 0X57 EEPROM 512bytes
@ decimal # 208 soit @Device 7bits = 0X68 RTC DS3231
#1 Active sortie RTC SQW=1Hz ... OK
adresse LCD= 39 soit 0X27
Sequence d'Init LCD 4x20 via I2C1 PCF8574 : .123456789A
LCD Bleu sur Breadboard adresse 7bits 0x27 !
Chargement caracteres Speciaux en CGRAM
Ecriture dans Eeprom 24C32 à l'adresse 320 de :
1234567
Etat tmp[], 1234567 apres ecriture dans eeprom
tmp[0]=49 0X31 tmp[1]=50 0X32
Lecture de 8 bytes, depuis l'adresse 320 Eeprom 24C32
Resultat lecture:
1234567
tmp[0]= 49 0x31 , tmp[1]= 50 0x32
Jeudi 12/10/23 18H13M44S
Jeudi 12/10/23 18H13M49S
Jeudi 12/10/23 18H13M53S
à suivre : test vitesse ecriture par page ....
Software : (MPLAB XC8)
Pack Projet : 18F27K42_Test_I2C_24C32_2023-1013.zip
source XC8 : main_test_24C32_18F27K42_X.c
chargeur :_18F27K42_Test_I2C_24C32_2023-1013.X.hex